RDMA technology (RDMA protocol) provides a useful method for reducing CPU (processor) workload in the transmission and reception of data across a network and in other network-related processing. Network interface cards that typically implement the RDMA technology can process operations that were previously performed by the CPU. Network interface cards on both the client and the server are typically required to implement the RDMA protocol. RDMA technology is typically used by, for example, commercial data centers that support high performance computing services.
RDMA networks (i.e., networks using the RDMA protocol) such as, for example, the Virtual Interface Architecture (VIA), InfiniBand, and iWARP (Internet Wide Area RDMA Protocol), provide low latency, high bandwidth, and zero-copy communication. Network communications are termed zero-copy when data is transmitted directly from a source memory location to a destination memory location without creating any intermediary copies of the data. RDMA networks provide software applications with three communication primitives (primary operations): (1) RDMA send/receive, (2) RDMA write, and (3) RDMA read. As known to those skilled in the art, each of these three operations has its relative advantages and disadvantages in terms of performance, security, and setup/configuration requirements.
Software applications can use RDMA networks in order to achieve high performance network communication. However, current technology does not provide any methods to automatically configure the behavior of software applications that use RDMA networks in order to maximize the performance of the software application. Therefore, the current technology is limited in its capabilities and suffers from at least the above constraints and deficiencies.